/**
 * Copyright (C), 2015-2020, XXX有限公司
 * FileName: TestGeneric
 * Author:   AEO WUGUOZHI
 * Date:     2020/7/21 10:38
 * Description: 泛型
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package collection;

import java.util.ArrayList;
import java.util.List;
import java.util.zip.CheckedOutputStream;

/**
 * 〈一句话功能简述〉<br> 
 * 〈泛型〉
 *
 * @author AEO WUGUOZHI
 * @create 2020/7/21
 * @since 1.0.0
 */

public class TestGeneric {
/**
 *带有泛型----Course，的List类型属性
 */

    public List<Course>courses;

    public TestGeneric(){
        this.courses = new ArrayList<Course>();
    }

    public void testAdd(){
        Course cr1 = new Course("1","大学语文");
        courses.add(cr1);
        //泛型集合中，不能添加泛型规定的类型以外的对象，否则会报错。
        //course.add("alsdjfla");
        Course cr2 = new Course("2","java基础");
        courses.add(cr2);
    }                                                                               

/**
 * 测试循环遍历
 * */
    public void testForeach(){
        for(Course c:courses){
            System.out.println(c.getId() + ":" + c.getName());
        }
    }


/**
 * 泛型结合可以添加泛型的子类型的对象实例
 * */

    public void testChild(){
        ChildCourse ccr = new ChildCourse();
        ccr.setId("3");
        ccr.setName("我是子类型的课程对象实例~~");
        courses.add(ccr);
    }


    public static void main(String[] args) {
        TestGeneric e = new TestGeneric();
        e.testAdd();
        e.testForeach();
        e.testChild();
        e.testForeach();
    }

}